﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
using Boom.Navigation;

namespace Boom.GameObjects
{
    public class Brick : MultilFrame
    {
        private bool _Destroy;
        private bool _Remove;
        private TimeSpan _ElapsedDes;
        private int _TimeBoom;

        //Propreti cho biết đối tượng có khả năng bị phá hủy hay không
        public bool Destroy
        {
            get { return _Destroy; }
            set { _Destroy = value; }
        }

        //Properti cho biết đối tượng đã bị xóa hay chưa
        public bool Remove
        {
            get { return _Remove; }
            set { _Remove = value; }
        }
        
        //Khoảng thời gian để gạch bị phá hủy
        public TimeSpan ElapsedDes
        {
            get { return _ElapsedDes; }
            set 
            {
                if (!Remove)
                    _ElapsedDes = value;
            }
        }

        public Brick(Game Mygame, ref Texture2D Texture, Vector2 Position, bool Destroy)
            : base(Mygame, ref Texture, 40, 40)
        {
            _Texture = Texture;
            _Position = Position;
            _Bounds = new Rectangle((int)Position.X, (int)Position.Y, 40, 40);
            _TimeBoom = Config.TimeBoom;
            _ElapsedDes = TimeSpan.Zero;
            _Remove = false;
            _Destroy = Destroy;
        }

        //Xóa đối tượng gạch trên màn hình
        private void Remove_Brick(GameTime gameTime)
        {
            _ElapsedDes += gameTime.ElapsedGameTime;
            if (_ElapsedDes > TimeSpan.FromMilliseconds(Config.TimeRemoveBrick))
            {
                _ElapsedDes -= TimeSpan.FromMilliseconds(Config.TimeRemoveBrick);
                ActiveFrame++;
                if (ActiveFrame == FrameList.Count - 1)
                {
                    Enabled = false;
                }
            }
        }

        public override void Update(GameTime gameTime)
        {
            
            base.Update(gameTime);
            if (Destroy && Remove)
            {
                Remove_Brick(gameTime);
            }
        }
    }
}
